package com.jie.com.feignclient;

import com.jie.com.jie.entity.Product;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * @Author: 张玉捷
 * @Date: 2021/5/8 21:49
 */
//调用商品服务的接口
@FeignClient("PRODUCT") //value:用来书写调用服务id
public interface ProductClient {

    //声明调用宏商品服务根据类别id查询分页商品信息，以及总条数
    @GetMapping("/productList")
    public String findbyCategoryIdAndPage(@RequestParam("page") Integer page,@RequestParam("rows") Integer rows,@RequestParam("categoryId") Integer categoryId);

    //声明调用商品服务根据类别id查询一组商品信息
    @GetMapping("/products")
    public List<Product> findByCategoryId(@RequestParam("categoryid") Integer categoryid);

    //声明根据id查询商品信息接口
    @GetMapping("/product/{id}")
    public Product product(@PathVariable("id") Integer id);

    //声明调用商品服务中test4接口 传递一个list集合类型参数 ?ids=21&ids=22&ids=23
    @GetMapping("/test4")
    public String test4(@RequestParam("ids") String[] ids);

    //声明调用商品服务中test3接口 传递一个数组类型 必须queryString方式传递
    @GetMapping("/test3")
    public String test3(@RequestParam("ids") String[] ids);

    //声明调用商品服务中test2接口 传递一个商品对象,@RequestBody以json格式传递,@RequestPart以form表单形式传递
    @PostMapping("/test2")
    public String test2(@RequestBody Product product);

    //声明调用商品服务中test1接口 路径传递参数
    @GetMapping("/test1/{id}/{name}")
    public String test1(@PathVariable("id") String id, @PathVariable("name") String name);

    //声明调用商品服务中test？name=xxx&age=12接口传递name，age...RequestParam与controller的声明保持一致
    @GetMapping("/test")
    public String test(@RequestParam("name") String name,@RequestParam("age") Integer age);

    //调用商品服务
    @GetMapping("/product")
    public String product();

    @GetMapping("/list")
    public String list();
}
